package lzupdater.gui.elements;

import javax.swing.JButton;

import lzupdater.gui.listeners.ProfileListener;
import lzupdater.locale.Dictionary;
import lzupdater.locale.Locale;
import lzupdater.locale.LocaleListener;
import lzupdater.locale.LocalizedString;
import lzupdater.utils.Profile;

//LZRosterUpdater, a java client to update LZRoster
//Copyright (C) 2008 Fraskor from Krasus (e-mail: fraskor@gmail.com)
//
//This file is part of LZRosterUpdater.
//
//LZRosterUpdater is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Button that keeps track of the locale for its label
 * 
 * @author Fraskor
 */
public class LocalizedJButton extends JButton implements LocaleListener,
		ProfileListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7313850342657248962L;
	private final String key;
	private LocalizedString toolTipText = null;

	/**
	 * Constructor
	 * 
	 * @param key
	 *            the key of the localized label in the Dictionary
	 */
	public LocalizedJButton(String key) {
		this.key = key;
		Dictionary.addLocaleListener(this);
	}

	public void localeChange(Locale locale) {
		setText(Dictionary.translate(locale, key));
		if (toolTipText != null) {
			setToolTipText(toolTipText.toString());
		}
	}

	public void setLocalizedToolTipText(LocalizedString text) {
		toolTipText = text;
		setToolTipText(toolTipText.toString());
		setFocusable(true);
	}

	public String getKey() {
		return key;
	}

	public void setProfile(Profile profile) {
		setEnabled(profile != null);
	}

}
